System for a text speller

ABSTRACT

An apparatus may generate a text entry with a user interface. The apparatus may include a display, a user input device, a memory and a processor. The apparatus may display single character user input controls and multi-character user input controls on the display. Each of the single character user input controls and the multi-character user input controls may be buttons selectable with the user input device. A single character user input control may correspond to a single character and a multi-character user input control may correspond to a group of characters. The apparatus may display one of the multi-character user input controls in a display region and other user input controls outside of the display region. If the multi-character user input control is selected, the apparatus may replace the multi-character user input control with a second set of single character user input controls in an expanded display region.

PRIORITY CLAIM

This application is a divisional application of, and claims priorityunder 35 U.S.C. §120 to, U.S. patent application Ser. No. 12/131,682,“SYSTEM FOR A TEXT SPELLER” filed Jun. 2, 2008, the entire contents ofwhich are incorporated by reference, which claims priority to U.S.Provisional Application No. 60/980,117, filed Oct. 15, 2007, the entirecontents of which is incorporated by reference.

BACKGROUND OF THE INVENTION

1. Technical Field

This invention relates generally to user interfaces and, moreparticularly, to a text speller in a user interface such as in a vehiclenavigation system.

2. Related Art

Most electronic systems and devices include a user interface to not onlyprovide information to users of these systems, but also to receive usercommands and other inputs to such systems. Such user interfaces caninclude a display screen in combination with one or more user inputdevices, such as buttons, knobs, or joysticks. User input devices mayalso include touch screen display capability, cursor control devicessuch as a mouse, microphones and voice responsiveness capability, andother mechanisms and systems that provide a communication path toexchange data between users and such systems. Examples of suchelectronic devices and systems include stationary devices such asautomated teller bank machines and airline flight check in kiosks, andmobile devices such as PDAs (personal digital assistants), mobilephones, and vehicle passenger entertainment systems. Vehicleentertainment systems can include audio systems, mobile communicationsystems and vehicle navigation systems, for example.

SUMMARY

An apparatus may generate a text entry with a user interface. Theapparatus may include a display, a user input device, a memory and aprocessor. The apparatus may display user input controls on the display.The user input controls may include single character user input controlsand multi-character user input controls. The single character user inputcontrols and the multi-character user input controls may be buttonsselectable with the user input device. A single character user inputcontrol may correspond to a single character and a multi-character userinput control may correspond to a group of characters. The apparatus maydisplay one of the multi-character user input controls in a displayregion and other user input controls in other display regions. If themulti-character user input control is selected, the apparatus mayreplace the multi-character user input control with a set of singlecharacter user input controls in an expanded display region. Theexpanded display region may include the display region. If a singlecharacter user input control is selected, a character corresponding tothe selected single character user input control is added to a textentry.

An interesting feature of one example of the apparatus simplifiesentering of information by tracking recent entries based on a spellertype. The speller type may be an indication of the type of informationthat the apparatus is to obtain from a user. Examples of speller typesmay include a city type, a state type, a street address type, and aperson's name type. The apparatus may progressively narrow the list ofrecent entries of that speller type as the user enters new characterswith the apparatus.

A method of displaying user input controls may operate by displaying atleast one of the user input controls in separate display regions. Eachof the display regions may correspond to a character group formed fromselectable characters. The user input controls may include amulti-character user input control, which is displayed in one of thedisplay regions. If a user selects the multi-character user inputcontrol, the operation may continue by displaying single character userinput controls in the display region instead of the multi-character userinput control. Displaying the single character user input controls mayinclude resizing the display region and shifting the position of atleast one of the other display regions in order to accommodate theresized display region.

If the user selects one of the single character user input controls, theoperation continues by adding a character that corresponds to theselected single character user input control to a text entry. Theoperation may include displaying a visual indication on themulti-character input control that indicates what characters areincluded in a group of characters corresponding to the multi-characteruser input control.

Other systems, methods, features and advantages will be, or will become,apparent to one with skill in the art upon examination of the followingfigures and detailed description. It is intended that all suchadditional systems, methods, features and advantages be included withinthis description, be within the scope of the invention, and be protectedby the following claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The system may be better understood with reference to the followingdrawings and description. The components in the figures are notnecessarily to scale, emphasis instead being placed upon illustratingthe principles of the invention.

FIG. 1 illustrates an example of an apparatus that includes a textspeller module.

FIG. 2 illustrates an example of an audio system, such as an audiosystem in a vehicle that includes the text speller module.

FIG. 3 illustrates an example of the text speller module in interactionwith other code modules in a system.

FIG. 4 illustrates an example display screen of an example first userinterface generated with the text speller module of FIGS. 1-3.

FIG. 5 illustrates an example display screen of an example second userinterface generated with the text speller module of FIGS. 1-3.

FIG. 6 illustrates an example display screen of an example userinterface that permits entry of numbers.

FIG. 7 illustrates an example display screen of an example third userinterface generated with the text speller module of FIGS. 1-3.

FIG. 8 illustrates an example display screen of an example fourth userinterface generated with the text speller module of FIGS. 1-3.

FIG. 9 illustrates an example dialog box superimposed on the exampledisplay screen of FIG. 8.

FIG. 10 illustrates an example display screen of an example fifth userinterface generated with the text speller module of FIGS. 1-3.

FIG. 11 illustrates an example display screen of an example sixth userinterface generated with the text speller module of FIGS. 1-3.

FIG. 12 illustrates a flow diagram illustrating a first exampleoperation of the text speller module of FIGS. 1-3 to obtain a text entryusing user input controls displayed on a display.

FIG. 13 illustrates a flow diagram illustrating a second exampleoperation of the text speller module of FIGS. 1-3 to obtain a text entryusing user input controls displayed on a display.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 illustrates an example of an apparatus that is computing device100 (CD) that includes a text speller module. The CD 100 may be apersonal computer (PC), a portable global positioning system, a cellphone, a personal digital assistant, an MPEG player or any other deviceor system capable of executing instructions, software code, or otherwiseperforming logic. The CD 100 may also use the text speller module 118 toobtain a text entry from a user for any purpose, such as entering acontact name, a song name, a destination street name, or any otherdesired entry.

The CD 100 includes at least a display 106, a processor 102, and memory104. The processor 102 may be any form of microprocessor, analog ordigital, capable of executing instructions or code. The memory 104 maybe any form of data storage mechanism accessible by the processor 102 orany combination of such forms, such as, a magnetic media, an opticaldisk, a random access memory (RAM), a flash memory, or an electricallyerasable programmable read-only memory (EEPROM). The display 106 shouldbe broadly construed to include any device operable to convertelectrical signals into information presented to the user in somevisually perceivable form, such as a liquid crystal display (“LCD”), acathode-ray tube (“CRT”) display, an electroluminescent display (“ELD”),a heads-up display (“HUD”), a plasma display panel (“PDP”), or a vacuumfluorescent display (“VFD”). The display 106 is coupled to the processor102. A device may be coupled to another device if electrical signals maybe transmitted between the two devices using one or more electricalconnections, optical connections, or any other type of connections nowknown or later discovered that are capable of transmitting a signal. Adevice in communication with another device may be coupled to eachother.

The memory 104 may include computer code. The processor 102 is operableto execute the computer code stored in the memory 104. The computer codemay include the text speller module 118.

The CD 100 may also include a user input device 110 that is coupled tothe processor 102. The input device may be a wheel button, a joystick, akeypad, a touch-screen configuration or any other device or mechanismcapable of receiving an input from a user and providing such an input asan input signal. Code stored in the memory 104 may receive such an inputsignal from the user input device. In one example, the display 106 maybe configured as a touch-screen display that provides user input byconverting contact with the surface of the display 106 into electricalsignals readable or receivable by the processor 102.

In another example, the text speller module 118 may display a cursor onthe display 106. The cursor may be directed by the user with a joystick,or some other device or mechanism. When the user directs the cursor tomove over a button drawn on the display 106 and selects the button, suchas by clicking a joystick button, the text speller module 118 may beprovided a signal indicative of the selection, and behave as it would ifthe user contacted the screen of display 106 proximate to the buttondrawn on a display, where the display is a touch-screen display.

FIG. 2 illustrates an example of an apparatus that is an audio system,such as an audio system in a vehicle that includes a text speller module218. In other examples, the text speller module 218 may be included inany other form of computing device or system and that use of the textspeller module 218 in an audio system, or an audio system for a vehicleshould not be construed as limiting the scope of application of the textspeller module 218 to only certain systems, devices, or applications. Tothe contrary, the text speller module 218 may be used in any system,device, or application where user input of any form of characters isdesired.

The example audio system may include a head unit 200, a display 206, anamplifier 220, loudspeakers 222, a microphone 226, a user input device228, a wireless device 230, a USB device 232, a bus 234, an audio source235, and other vehicle systems 236. In other examples, the audio systemmay include fewer or greater amounts of functionality and/or features,devices, and systems that provide or support provision of audio and/orvisual inputs and/or outputs to a user. The head unit 200 may be coupledto the display 206 and the amplifier 220. The amplifier 220 may becoupled to the loudspeakers 222. The head unit 200 may communicatethrough the bus 234 to the other vehicle systems 236. The other vehiclesystems 236 of this example may include vehicle speed, number ofpassengers, or any other operational related vehicle parametersavailable from various systems included in the vehicle that are capableof communication on the bus 234. The display 206 may be, for example, atouch-screen display that provides user input by converting contact withthe surface of the display into electrical signals. In other examples,the display 206 may be any other form of display. The display 206 shouldbe broadly construed to include a device operable to convert electricalsignals into information presented to the user in some form, such asCRTs, LCDs, and LEDs.

The head unit 200 may include an audio tuner 208 and a navigation systemunit 210. In other examples, the head unit 200 may include additional orfewer operational functionalities. The audio tuner 208 and/or thenavigation system unit 210 may be external to the head unit 200 orinternal to the head unit 200. The head unit 200 may further include aprocessor 202 and a memory 204. The processor 202 can be any form ofprocessor, analog or digital, such as one or more microprocessors and/ordigital signal processors (DSP). The memory 204 may be any form of datastorage mechanism accessible by the processor 202, such as, a magneticmedia, an optical disk, a random access memory (RAM), flash memory, orelectrically erasable programmable read-only memory (EEPROM). Theexample navigation system unit 210 may include a geographic positioningsystem (GPS) 240, a map database 242, and a gyroscope 244. In otherexamples, the navigation system 210 may include any other locationrelated functionality or information. The GPS 240 may determine thephysical location of the head unit 200 using information wirelesslytransmitted from a satellite 224 and received via antenna. Positioninginformation may also be available from cellular towers, or otherpositioning constellations GLONASS or Galileo. The map database 242 maybe stored in the memory 204, and/or may be stored external to the headunit 200. For example, the map database 242 may be stored external tothe vehicle, and may be accessible wirelessly. In another example, themap database 242 may be stored internal to the vehicle or stored in twoor more databases that are internal and external to the vehicle.

The head unit 200 may interact with a user through external devices incommunication with the head unit 200 such as the display 206, microphone226, user input device 228, wireless device 230, USB device 232, othervehicle systems 236, and/or the combination of the amplifier 220 and theloudspeakers 222. The user input device 228 may be anyelectro-mechanical device, electro-optical device, or any other type ofdevice, now known or later discovered, that is configured to convertuser inputs into electrical signals such as a mouse, joystick,trackball, camera, keyboard, keypad, wireless device, or touch-screendisplay.

In one example, the processor 202 may be operable to execute computerinstructions embodied in code stored in the memory 204. In otherexamples, the code may be stored external to the head unit 200, orexternal to the vehicle and be accessible to the processor 202 via awired communication link, a wireless communication link, or somecombination of wireless and wired communication links. In still otherexamples, portions of the code may be stored in the memory 204 and otherportions of the code may be stored external to the memory 204. The codestored in the memory 204 may include the text speller module 218. Thecode may also include a user interface module 216, an audio systemmanager 212 and a navigation system manager 214. In other examples,additional or fewer modules may be included in the code. In addition,the number and description of specific modules included in memory 204are examples used to describe the functionality and should not beconstrued as limiting the configuration or functionality of the headunit 200. The audio system manager 212 may control the audio tuner 208.The navigation system manager 214 may control the navigation system unit210.

During operation, the user interface module 216 may obtain user inputfrom any input device, such as the display 206, the microphone 226,and/or the user input device 228. The user interface module 216 maydisplay information on the display 206. The text speller module 218 maybe a standalone separate module, part of the user interface module 216,or included in one or more other modules of the head unit 200. Codeincluded in the head unit 200, may use the text speller module 212 toobtain an input from a user. The text speller module 218 may communicatewith the user interface module 216 to obtain a user input and to displayinformation on the display 206.

FIG. 3 illustrates an example of a text speller module 318 ininteraction with other code modules in a system. In this example, theother modules include a requesting module 304 and a user interfacemodule 306. In other examples, depending on the particular applicationin which the text speller module 318 is deployed, any number of modulesdescribing the functionality of the system in which the text spellermodule 318 is operational may be included. The code modules may alsoinclude a possible entries database 308 and a recent entries database302. The requesting module 304 may be any code that receives an entry ofdata by a user from the text speller module 318, such as a contactmanagement module and/or a navigation module. Any system may includemultiple requesting modules 304. The text speller module 318 may displayinformation and obtain information from a user via the user interfacemodule 306.

The possible entries database 308 may be any kind of database. Adatabase may be any electronic collection of information that isorganized so that it can be accessed, managed, and updated, such as aRelational Database Management System (RDBMS), an object-orienteddatabase, an extensible markup language database (XML), a file system,or a logical structure stored in memory. The recent entries database 302may also be any kind of database. The recent entries database 302 andthe possible entries database 308 may be the same database or differentdatabases.

During the operation of one example system, the requesting module 304,prior to invoking the text speller module 318, may obtain a list ofpossible entries from the possible entries database 308. When therequesting module 304 invokes the text speller module 318 to obtain atext entry, the requesting module 304 may pass the list of possibleentries as an argument to a subroutine of the text speller module 318.The text speller module 318 may subsequently use the list of possibleentries, in conjunction with a partial entry manually entered by a user,in an effort to predict what the user would eventually manually enter.The text speller module 318 may permit the user to select a completeentry from the list of possible entries in lieu of manually completingthe partial entry.

In another example system, the text speller module 318 may obtain a listof possible entries from the possible entries database 308 after beinginvoked by the requesting module 304. In one example, the requestingmodule 304 may pass a reference to a callback subroutine as an argumentwhen invoking the text speller module 318. The text speller module 318may invoke the callback subroutine to obtain a list of possible entries.In a different example, text speller module 318 may pass informationmanually entered by a user as an argument to the callback subroutine torestrict the list of possible entries returned by the callbacksubroutine based on the information manually entered by the user. Theseexamples are merely illustrative examples and should not be construed aslimiting how the text speller module 318 obtains the list of possibleentries from the possible entries database 308.

The text speller module 318 may also obtain a list of recent entriesfrom the recent entries database 302. For example, the requesting module304 may pass a speller type as an argument to a subroutine of the textspeller module 318. A speller type is defined as an indication of thetype of data that the text speller module 318 is to obtain from theuser. The text speller module 318 may search the recent entries database302 for a list of recent complete entries made by the text spellermodule 318 corresponding to the speller type. The text speller module318 may combine the list of recent entries, together with a partialentry manually entered by a user, in an effort to predict what the userwill eventually manually enter. The text speller module 318 may permitthe user to select a complete entry from a list of recent entries inlieu of manually completing the partial entry. This example is merely anillustrative example and should not be construed to limit how the textspeller module 318 obtains the list of recent entries from the recententries database 302.

The list of recent entries may be restricted using other information inaddition to or instead of speller type. As a first example, the list ofrecent entries may be restricted based on an active databaseconfiguration of a navigation system unit. An active databaseconfiguration may be a database containing data specific to a geographicregion such as a country. In one example system, if a navigation systemunit is currently physically located in Canada, an active databaseconfiguration may be set to Canada. The list of recent entries may belimited to entries that apply only to Canada, excluding entries thatapply to other geographic regions. The text speller module 318, therequesting module 304, code managing the recent entry database 302, orany other code may perform this restriction.

As a second example, the list of recent entries may also be restrictedbased on the user's context. For example, if a user is to enter adestination address, the user may first enter a state name, then a cityname, and finally a street name. If the user is entering the city name,the list of recent entries may be restricted to only those items havingcities located in the state the user entered with the text spellermodule. If the user is entering the street name, the list of recententries may be restricted to only those items having streets located inthe city and state the user just entered. In other examples, if the useris entering the city name, the list of recent entries may be restrictedto only those items having cities located in the state the user iscurrently physically located in. Restricting the list of entries basedon context may apply to any user context, such as: restricting a list ofrecent entries to songs performed by an artist whose name was justentered by the user or restricting a list of recent entries to points ofinterest located in a city just entered by the user. The text spellermodule 318, the requesting module 304, code managing the recent entrydatabase 302, or any other code may perform this restriction.

As a third example, the list of recent entries may also be restrictedbased on the current user. An example system may have multiple users andbe able to determine the current user. In such a system, the list ofrecent entries may be restricted to only those recent entries made bythe current user.

After obtaining a complete entry of data from the user, the text spellermodule 318 may store the complete entry, a text entry, in the recententries database 302 before returning the text entry to the requestingmodule 304. In other examples, the requesting module 304 may access therecent entries database 302 instead of the text speller module 318: therequesting module 304 may pass any list of recent entries to the textspeller module 318, and the requesting module 304 may store the textentry in the recent entries database 302. In still other examples, anyother module may access the recent entries database 302.

A speller type may be defined as the type of data that the text spellermodule 318 is to obtain from the user for a particular requesting module304. For example, a system might have a contact address speller type anda destination address speller type, where a contact manager module usesthe contact address speller type, and a navigation system manager moduleuses the destination address speller type. A system may use more or lessspeller types depending on how narrowly or broadly recent entries madeby a user may apply.

The speller type may be determined using any method. For example, thetext speller module 318 may accept the speller type as an argument to asubroutine of the text speller module 318. In a different example, thetext speller module 318 may determine the speller type. In some systems,a particular module may invoke a system-level module to determine whatsubroutine included in what module invoked that particular module. Insuch systems, the text speller module 318 may invoke the system-levelmodule to determine what subroutine and module invoked the text spellermodule 318. The text speller module 318 may then set the speller typeto, for example, a concatenation of the subroutine name and the name ofthe requesting module 304.

Both the recent entries database 302 and the possible entries database308 may be used together during user entry to most accurately predictwhat a user is entering. In still other examples, the recent entriesdatabase 302 and the possible entries database 308 may be usedsequentially. In other examples, the sequential order of use of therecent entries database 302 and the possible entries database 308 may bea user preference setting that is pre-stored, or is selected duringmanual entry by the user. In yet other examples, the possible entriesdatabase 308 may be the superset to the recent entries database 302.

The number of items stored in the recent entries database 302 may belimited to a predetermined amount. For example, the predetermined amountmay be hard coded, obtained from a user preference setting, and/ordetermined dynamically based on available storage space. Thepredetermined amount may alternatively, or in addition, depend on thespeller type.

One example of a requesting module 304 is the navigation system manager214 described with reference to FIG. 2. In this example, the navigationsystem manager 214 may anticipate a user entering information from apredetermined category of information, such as a destination state name.For example, the navigation system manager 214 may obtain a list ofpossible entries, which includes a list of state names, from a mapdatabase 242 described with reference to FIG. 2. The speller type inthat example might be a destination state name.

FIG. 4 illustrates an example display screen 401 of an example firstuser interface generated with the text speller modules of FIGS. 1-3. Insome examples, the text speller module 318 (118 or 218) may display userinput controls corresponding to characters. The user input controls maybe any user input controls operable to receive a selection signal by auser, such as <HREF> elements in HTML, buttons, and tabs. As usedherein, the term “character” or “characters” includes letters, numbers,symbols, icons, logos, or any other visual representation that hasmeaning to a user and/or a system in which the text speller module isdeployed. The user input controls may be single character user inputcontrols such as an “H” single character user input control 402 or an“I” single character user input control 404. The user input controls mayalso be multi-character user input controls, such as multi-characteruser input controls 406 and 408. A single character user input control,402 and 404, corresponds to a single character. A multi-character userinput control, 406 and 408, corresponds to a group of characters. Asused herein, the term “selectable character” or “selectable characters”refers to any character corresponding to any of the user input controls.

In some examples, the user interface may include a character button pane410 on which the text speller module 318 displays the user inputcontrols corresponding to the characters. The single character userinput controls, 402 and 404, may be displayed as a collection of userinput controls.

The text speller module 318 may also display a partial entry 412 in anentry field 414. The partial entry 412 includes characters manuallyentered by a user during operation (or one or more charactersauto-filled by name completion). The entry field 414 is any userinterface control operable to display text. In other examples, the textspeller module 318 may display a partial entry 412 without the entryfield 414. In still other examples, the text speller module 318 may notdisplay the partial entry 412.

During operation, if a user selects a single character user inputcontrol, 402 or 404, a character corresponding to the single characteruser input control, 402 or 404, selected by the user may be concatenatedto an end of the partial entry 412. The text speller module may displaya position cursor 416 to indicate the end of the partial entry 412. Thepartial entry 412 may include a beginning character 418 if the user hasmade any manual entry. As the user sequentially selects the singlecharacter user input controls, 402 and 404, the corresponding charactersmay be sequentially added to the end of the partial entry 412 in orderto spell out a text entry that is being manually entered into the entryfield 414 by the user. The user may select a single character user inputcontrol, 402 and 404, or a multi-character user input control, 406 and408, using any selection method now known or later discovered, such asby contacting a touch-screen display, speaking a command, or moving acursor over the user input control with a mouse, joystick or othermaneuvering apparatus and pressing a button on a user input device 110(FIG. 1), such as a mouse button. In some examples, the user may use adifferent selection method for the single character user input control,402 or 404, than the multi-character user input control, 406 or 408.

Also during operation, the text speller module 318 may displayinformation received from an entries database. Depending on the example,the entries database may be a possible entries database 308 or a recententries database 302, or both (FIG. 3). For example, the text spellermodule 318 may display a first entry 420 of a list of possible entriesreceived from the possible entries database 308. In another example, thetext speller module 318 may display a last entry 420 of the list ofentries received from the possible entries database 308. In yet anotherexample, the list of entries may be all entries stored in the possibleentries database 308 beginning with the partial entry 412. The firstentry 420 may be displayed in the entry field 414, where the charactersnot yet manually entered by the user are displayed differently than thepartial entry 412. A different text style may be used, such as bold vs.plain face or italics vs. non italics. The text speller module 318 maydisplay a numerical count 422 of the entries in the list of entries.Thus, as the user manually enters more characters that are concatenatedto the end of the partial entry 412, the numerical count 422 maydecrease and the first entry 420 may change as the list of entrieschanges.

The text speller module 318 may also display a next user input control424. Selection of the next user input control 424 navigates to a newscreen from which the user may select an entry from the list of thepossible entries, where the text entry is set to the selected entry. Insome examples, if the numerical count 422 is one, then selection of thenext user input control 424 operates to set the text entry to the firstentry 420.

Similarly, a first item 420 from a list of recent entries, received fromthe recent entries database 302 described in FIG. 3, that begins withthe partial entry 412 may be displayed. The characters of the first item420 not yet entered by the user are displayed differently than thecharacters of the partial entry 412. A different text style may be usedsuch as bold vs. plain face or italics vs. non italics. A total numberof items 422 in the list of recent entries that match the partial entry412 may be displayed. Selection of the next user input control 424navigates to a new screen from which the user may select an entry fromthe list of the recent entries, where the text entry is set to theselected entry. In some examples, if the numerical count 422 is one,then selection of the next user input control 424 operates to set thetext entry to the first entry 420.

As discussed above, a single character user input control, 402 and 404,may correspond to a single character and a multi-character user inputcontrol, 406 and 408, may correspond to a group of characters. In FIG.4, the selectable characters include the letters of the Englishalphabet: “a”, “b”, “c”, “d”, “e”, “f”, “g”, “h”, “i”, “j”, “k”, “l”,“m”, “n”, “o”, “p”, “q”, “r”, “s”, “t”, “u” “v”, “w”, “x”, “y”, and “z”.In this example, the groups of characters may include a first group ofletters “a” through “i”, a second group of letters “j” through “r”, anda third group of letters “s” through “z”. Dividing the characters insuch a manner forms two groups of nine and one group of eight. In otherexamples, the groups may be differently sized and there may be more orless groups. In still other examples, a collection of numbers,characters, words, or any other collection of characters may be dividedinto groups.

A first group of characters 426 may be displayed on corresponding singlecharacter user input controls, such as 402 and 404. The first group ofcharacters 426 may be referred to as a maximized group. The remaininggroups may be displayed using multi-character user input controls, suchas 406 and 408. The remaining groups may be referred to as minimizedgroups. The characters included in the maximized group may be referredto as maximized characters 430 and the characters included in theminimized group may be identified as minimized characters 428. Anyalgorithm may be used to determine which group of characters isinitially the maximized group. Alternatively, the group that isinitially the maximized group may be predetermined by user preference orbe hard coded. In still other examples, no group may be initiallymaximized.

In one example, the characters 428 corresponding to the multi-characteruser input control 406 may be displayed on the multi-character userinput control 406 using a smaller font size than is used to display acharacter 430 on a single character user input control 404. For example,in the example display screen 401, the characters “J” through “R” in theEnglish alphabet are displayed on a first multi-character user inputcontrol 406 in a font size smaller than the character “H,” whichcorresponds to one of the single character user input controls 402.

In other examples, any visual indication may be displayed on each of themulti-character user input controls, 406 and 408, that indicates whatcharacters are included in a group corresponding to each of themulti-character user input controls, 406 and 408. For example, visualindication of the characters in the group corresponding to themulti-character user input control 406 may be displayed as a range ofcharacters, such as “J-R.”

The placement of the multi-character user input controls, 406 and 408,in relation to the single character user input controls, 402 and 404,may suggest what characters correspond to the multi-character user inputcontrols, 406 and 408. For example, placement may suggest thecorresponding characters when the characters that are divided into thegroups have an order in a predefined sequence. For example, thecharacters may have an order in a predefined sequence where thecharacters from all of the groups together form an alphabet and thealphabet has an alphabetic order. In another example, the characters mayhave an order in a predefined sequence where the characters are integersin ascending or descending order. In yet another example, the charactersmay have an order in a predefined sequence defined by a character setencoding table, such as a code page.

Selectable characters may be sequentially consecutive characters in thepredefined sequence. Sequentially consecutive characters are charactersthat follow each other in the predefined sequence without skipping anycharacters. Alternatively, the selectable characters may not besequentially consecutive characters in the predefined sequence.

Where the characters have an order in a predefined sequence, the groupsmay have an order determined by the predetermined sequence. For example,if each of the groups of characters includes only sequentiallyconsecutive characters in the predefined sequence and no two groups haveany characters in common, then each of the groups may be ordered basedon a relative position in the predefined sequence of one of thecharacters of each of the groups. In another example, the groups may beordered based on the predefined sequence where no two groups have anycharacter in common, each group has a lowest and highest character inthe predefined sequence, and no characters from the other groups fallbetween the lowest and highest character of each group.

As an example of placement suggesting what characters correspond to eachof the multi-character user input controls, 406 and 408, consider FIG.4. In FIG. 4, a first multi-character user input control 406 ispositioned immediately to the right of the first group of characters 426displayed on single character user input controls, 402 and 404. Such aplacement may suggest to the user that the characters corresponding tothe first multi-character user input control 406 are the characters thatsequentially follow a character of the first group of characters 426having the highest order in the predefined sequence of the first groupof characters 426. Placing a second multi-character user input control408 to the right of the first multi-character user input control 406 mayfurther suggest that the characters corresponding to the secondmulti-character user input control 408 sequentially follow one or moreof the characters corresponding to the first multi-character user inputcontrol 406.

During operation with respect to the display screen 401 shown in FIG. 4,a user may indicate a selection of a character that belongs to aminimized group of characters corresponding to a multi-character userinput control 408 by selecting the multi-character user input control408. When a user selects one of the multi-character user input controls,406 or 408, the text speller module 318 may internally identify thecurrently maximized group as one of the minimized groups, and internallyidentify the group of characters corresponding to the multi-characteruser input control, 406 or 408, selected by the user as a new maximizedgroup of characters. The text speller module 318 may internally identifya group in any manner that computer code may identify a data structure,such as storing a reference to the data structure in a programmingvariable or setting an attribute of the data structure to a determinedvalue.

FIG. 5 illustrates an example display screen 501 of an example seconduser interface generated with the text speller modules of FIGS. 1-3. Inone example, the text speller module 318 may display the display screen501 after a user selects one of the multi-character user input controls406 or 408 shown in FIG. 4. In response to this selection, the textspeller module 318 may display the originally minimized group (i.e., thegroup of characters corresponding to the selected multi-charactercharacter user input control 406 or 408) as a second group of characters526 corresponding to single character user input controls 502. The textspeller module 318 may display a single multi-character user inputcontrol 528 corresponding to the originally maximized group ofcharacters 426. The text speller module 318 may display any of themulti-character user input controls 406 that were not selected by theuser the same as before, such the multi-character user input control 406shown in FIG. 4 and the multi-character user input control 506 shown inFIG. 5.

In another example, a user may be permitted by the text speller module318 to enter only those entries that belong to a list of entriesobtained from an entries database, such as a possible entries database308 or a recent entries database 302 (FIG. 3). In such an example, asthe user selects characters by selecting single character user inputcontrols 502, the partial entry 512 should match, at least partially,the entries in the list of entries. Otherwise, at least in the case of apossible entries database 308, the text speller module 318 would bepermitting the user to make entries that were not possible entries.Either an entry may match the partial entry 512 exactly, or the entrymay have a next character that follows the last character of the partialentry 512. A set of characters including the next character of each ofthe entries may be a certain subset of the characters corresponding touser input controls. Therefore, the text speller module 318 may enableonly single character user input controls 504 that belong to thiscertain subset of characters. For example, in display screen 501, the“S” single character user input control 504 is enabled and the “Z”single character user input control 502 is disabled, because the letter“S” matches at least one possible entry.

In some examples, the text speller module 318 may disable amulti-character user input control, 506 or 528, where no characters of agroup of characters corresponding to the multi-character user inputcontrol belong to this certain subset of characters. As discussed above,a user may indicate that he or she wants to enter a charactercorresponding to a multi-character user input control 506 by selectingthe multi-character user input control 506. If that character is theonly character corresponding to the multi-character user input control506 that belongs to this certain subset of characters, the text spellermodule 318 may simply concatenate that character to the partial entry512, instead of maximizing the group and displaying the correspondingsingle character user input controls 502. Such behavior may be optionalas determined by a user preference, such as a pre-stored userpreference.

In another example, the behavior described for a list of possibleentries, may be implemented for a list of recent entries. The behaviorfor a list of recent entries may be optional based on a user preference,be implemented in lieu of the behavior for a list of possible entries,or be operable in combination with the behavior for a list of possibleentries.

In another example, when a multi-character user input control, 506 or528, displays multiple characters thereon, the characters correspondingto the multi-character user input control 506 or 528 that belong to thiscertain subset of characters may be displayed differently than othercharacters on the same multi-character user input control 506 and 528.For example in display screen 501, an “O” character 530 on themulti-character user input control 506 is displayed differently than the“J” character 532. In other examples, if a user is permitted to enterany character regardless of any list of possible entries or of recententries, the text speller module 318 may enable all of the singlecharacter user input controls, 502 and 504, and multi-character userinput controls, 506 and 528, and simply display this certain subset ofcharacters differently than others characters corresponding to the userinput controls.

As illustrated in FIG. 5, a group of characters 526 may be displayed ona grid of single character user input controls, 502 and 504. The gridmay have three rows and three columns, or any other number of rows andcolumns. In some examples, the same size grid may be used to display anymaximized group, regardless of the number of characters in the group. Insuch examples, if the number of characters in a particular group ofcharacters is less than the number of cells in the grid, a blank spacemay be displayed in, for example, the lower-right corner of the grid.However, any other arrangement of characters within the grid may beused. In other examples, an arrangement other than a grid may be used toposition the single character user input controls, 502 and 504.

The text speller module 318 may display other user input controlsselectable to modify what characters are divided into groups anddisplayed on corresponding single character user input controls, 502 and504, and multi-character user input controls, 506 and 528. For example,a user may select a number user input control 536 and the text spellermodule 318 may modify the characters from letters to numbers asillustrated in FIG. 6. In another example, a user may select a symboluser input control 538 and the text speller module 318 may modify thecharacters from letters to symbols, such as “$”, “@”, “!”, etc. asillustrated in FIG. 11. In still another example, a user may select anaccent user input control 540 and the text speller module 318 may modifythe characters from letters to accented characters as illustrated inFIG. 10.

FIG. 6 illustrates an example display screen 601 of an example userinterface permitting entry of numbers. In FIG. 6, integers “1” through“9” are displayed on corresponding single character user input controlsin a three by three grid, starting at the top-left with “1”, countingfrom left to right, and finishing with “9” at the lower-right. Also inFIG. 6, on display screen 601, integer “0” is displayed on acorresponding single character user input control displayed to the leftof the single character user input control that corresponds to theinteger “1.” In other examples, other arrangements may be used todisplay numbers, such as in a three by four grid, a five by two grid,and a non-grid arrangement.

Again, the text speller module 318 may display other user input controlsthat are selectable to modify what characters are divided into groupsand displayed on corresponding user input controls. For example, a usermay select a letter user input control 636 and the text speller module318 may modify the characters from numbers back to letters asillustrated in FIG. 5. In other examples, additional or different userinputs controls may be displayed that are selectable to modify whatcharacters are divided into groups and displayed on corresponding userinput controls.

FIG. 7 illustrates an example display screen 701 of an example thirduser interface generated with the text speller module of FIGS. 1-3. Thetext speller module 318 may use a recent user input control 702 todisplay, and enable selection by a user, of recent entries from the listof recent entries received from the recent entries database 302 (FIG.3). During operation, if a user selects the recent user input control702, the text speller module 318 may display a list of recent entries onthe example display screen 701 or on a different display screen. Theuser may then select one of the items in the list of recent entries ashis entry, or may return to the example display screen 701 by selectinga cancel user input control. In some examples, the text speller module318 may display a numerical count 704 of the list of recent entries.

In different examples, the text speller module 318 may display anumerical count 704 of the list of recent entries that match the partialentry 712 made by the user so far. The user may decide not to selectrecent user input control 702 if the user considers the numerical count704 to be too large. If no recent entry in the list of recent entriesmatches the partial entry 712, the text speller module 318 may disablethe recent user input control 702.

Display regions, 714, 716, and 718, contain user input controls, 704,706, and 708. Each display region is sized to include one or more userinput controls, 704, 706, and 708, that correspond to selectablecharacters. Three display regions, 714, 716, and 718 are shown in theexample display screen 701. Other examples may have fewer or greaternumber of display regions. Each of the display regions 716 and 718 mayinclude a multi-character user input control, 706 and 708. The displayregion 714 may include a group of single character user input controls704. Characters included in a group that correspond to the displayregion may remain the same regardless of which of the user inputcontrols included in the display regions is selected. In other examples,the characters included in a group corresponding to one of the regionsmay change based on a user selection.

FIG. 8 illustrates an example display screen 801 of an example fourthuser interface generated with the text speller modules of FIGS. 1-3. InFIG. 8, the user may select a change case user input control 802. Inresponse to the selection of the change case user input control 802, thetext speller module 318 may change the case of the characters displayedon single character user input controls and multi-character user inputcontrols.

Selection of an accent user input control 804 on the example displayscreen 801 may change the characters displayed to other characters, suchas accented characters, as shown in FIG. 10. Accented characters may beconsidered stylistic variations of common characters. The available setof accented characters may determined from any condition, such ascurrent language and/or territory settings, the character set used,and/or a set of characters specific to the information to be entered.

Alternatively or in addition, the accented characters may be accessedusing a dialog box 901 as shown in FIG. 9. In FIG. 9, the dialog box 901is superimposed on the display screen 801 of FIG. 8. In some examples,the dialog box 901 may be a modal dialog box that is displayed over aportion of another display screen 801, where the underlying displayscreen 801 is disabled. In other examples all or some portion of theunderlying display screen 801 may not be disabled. Instead oftransitioning to a screen that displays groups of accented characters asillustrated in FIG. 10, a subset of the accented characters may bedisplayed in the dialog box 901. The subset of the accented charactersmay be a family of accented characters 902. For example, the family ofaccented characters 902 may include accented characters that share acommon root character 904, where the root character 904 has no accentmark. For example, a family of characters including “À”, “Á”, “Â”, “Ã”,“Ä,”, “Å”, and “AE”, may be said to have a root character 904 of “A”.The root character 904 may be displayed in the dialog box 901 along withthe other members of the family of characters 902. In other examples,any other groupings or subsets of characters may be provided in one ormore dialog boxes 901. For example, the dialog box 901 may display asubset of the alphabet, a subset that includes a mixture of commonlyused characters, such as numbers and letters, or any other subset ofcharacters.

Referring to FIGS. 8 and 9, a user may initiate generation of the dialogbox 901 by requesting the dialog box 901 during operation. In oneexample, the user may request the dialog box 901 using a singlecharacter user input control 806 on a display screen, such as displayscreen 801. The single character user input control 806 may correspondto the root character of the subset of characters included in the dialogbox 901. For example, as illustrated in display screen 801 and dialogbox 901, a root character 904 “A” may be selected to display a family ofcharacters 902 related to the root character “A.” A user may request thedialog box 901 using a secondary selection mechanism of the singlecharacter user input control 806, such as pressing and holding thesingle character user input control 806 for a predetermined period oftime, moving a cursor over the single character user input control 806and clicking on a certain mouse button, selecting another button whilealso selecting the single character user input control 806,double-clicking the single character user input control 806, or anyother selection mechanism that is different than simply selecting thesingle character user input control 806 with a primary selectionmechanism.

The existence of a subset of characters, such as the accentedcharacters, related to a root character 904, such as the letter “A,” maybe indicated with a visual indication 808 displayed on or proximate tothe single character user input control 806, such as a plus sign asdepicted in display screen 801. Any visual indication 808 may be used,such as displaying a single character user input control 806 with aunique color, using italics to display the root character 904 on thesingle character user input control 806, and outlining the singlecharacter user input control 806. In other examples, the text spellermodule 318 may not display any visual indication 808.

Within the dialog box 901, single character user input controls 908 thateach correspond to a respective member of the family of characters 902may be selected by a user. Upon selection of one of the single characteruser input controls 908, the text speller module 318 may add thecharacter corresponding to the selected single character user inputcontrol 908 to a partial entry 906. In some examples, in response toselection of one of the single character user input controls 908, thetext speller module 318 may also dismiss the dialog box 901, andtransition to the underlying display screen, such as display screen 801.Alternatively, or in addition, the text speller module 318 may dismissthe dialog box 901 in response to selection of a close user inputcontrol 910 by the user. In one example, the text speller module 318 maydismiss the dialog box 901 without modifying the partial entry 906 whenthe close user input control 910 is selected. In another example, anycharacter corresponding to a single character user input control 908selected in the dialog box 901 may be first added to the partial entry906 by the text speller module 318 in response to selection of the closeuser input control 910.

In yet another example, the dialog box 901 may be displayedautomatically if multiple accented or alternate characters are availablefor a root character 904 and the user selects the single character userinput control 806 in the display screen 801 corresponding to the rootcharacter 904. Alternatively or in addition, if the root character 904is not available due to a list of possible entries restriction and onlyone alternate character is available, the text speller module 318 maydisplay the alternate character instead of the root letter on the singlecharacter user input control 806 in the display screen 801.

FIG. 10 illustrates an example display screen 1001 of an example fifthuser interface generated with the text speller modules of FIGS. 1-3. Inone example, the characters displayed in the display screen 1001 areaccented characters. The accented characters may be displayed on singlecharacter user input controls 1002 and on multi-character user inputcontrols, 1006 and 1008.

FIG. 11 illustrates an example display screen 1101 of an example sixthuser interface generated with the text speller module of FIGS. 1-3. Inone example, the characters displayed in the display screen 1101 aresymbols, such as #, $, %, *, etc. The symbols may be displayed on singlecharacter user input controls 1102 and on multi-character user inputcontrols, 1106 and 1108.

FIG. 12 is a flow diagram illustrating a first example operation of thetext speller module of FIGS. 1-3 to obtain a text entry using user inputcontrols displayed on a display. More specifically, FIG. 12 depictsoperations related to selection of a minimized group, selection of acharacter in a maximized group, and selection of acceptance of a textentry. However, there are other operations associated with obtaining atext entry using user input controls drawn on a display not depicted ordiscussed. The user input controls represent characters, where thecharacters are divided into groups, as previously discussed. Thecharacters may be divided into any number of groups and the groups maybe of any size. Each of the groups may be substantially the same size asthe other groups. Alternatively, the groups may be different sizes. Thegroups may be ordered in any manner such as by an associated characterset sequence, alphabetically, by frequency of use, or by any combinationthereof. In one example, where the characters are the letters of theEnglish alphabet, the letters may be divided into three groups: a firstgroup of characters “A”-“I,” a second group of characters “J”-“R,” and athird group of characters “S”-“Z.”

In FIG. 12, at block 1202, the operation begins by internallyidentifying one of the groups of characters as a maximized group.Identification of the maximized group may include starting with a firstgroup as ordered alphabetically, with a first group as ordered by acharacter set sequence, with a first group as ordered by most frequentlyused, with a first group that is the group that was last maximized, orwith a randomly selected group.

The operation may include internally identifying all other groups asminimized groups. Alternatively, no group may be maximized at thebeginning. In another example, one group may be initially maximized, butif, after no user input control is selected for a predetermined periodof time, the maximized group is minimized.

Displaying the maximized group occurs at block 1204. Display of themaximized group may include displaying a single character user inputcontrol corresponding to each character in the maximized group. Displayof the maximized group may also include displaying the single characteruser input controls in a determined pattern, such as a three-by-threematrix. If the number of characters in the group is less than the numberof characters in the determined pattern, the determined pattern may beautomatically modified by the text speller module to adjust the displayof the maximized group. For example, if the predetermined pattern is athree-by-three matrix, and there are less than nine characters in thegroup to be maximized, then displaying the single character user inputcontrols in a three-by-three matrix may include leaving blank spaces ina predetermined location, such as in the bottom-right portion of thematrix.

Minimized groups may be displayed at block 1206. Display of theminimized groups may include displaying a multi-character user inputcontrol corresponding to each of the minimized groups. Themulti-character user input control may be graphically represented as atab user interface element. In another example, the multi-character userinput controls may be graphically represented as an overlapping set ofcards.

Displaying a multi-character user input control may include displaying avisual indication of each of the minimized groups on correspondingmulti-character user input controls, where the visual indicationindicates the characters that belong to each of the minimized groups.For example, the visual indication may include displaying all of thecharacters in the group on the user input control, displaying thecombination of the first character in the group, a “−”, and the lastcharacter in the group to indicate the range of characters in the group,or any other form of visual indication that provides the user with anindication of what characters are included in the minimized group.

Displaying a multi-character user input control may include positioningthe multi-character user input control along a single axis of thedisplay. A matrix of single character user input controls and one ormore other multi-character user input controls may also be positionedalong the single axis. The single axis may be at any angle, such ashorizontal, vertical, or 45 degrees from the horizontal. Themulti-character user input control, the matrix of single character userinput controls, and other multi-character user input controls may beordered along the single axis in a predetermined order. For example,each of the characters included in all of the groups may be ordered in apredefined sequence, such as an alphabetic sequence or in a sequencedefined by a numerical representation of each of the characters in acharacter set. The predefined order may then be the order of each of thegroups based on a relative position, in the predefined sequence, of abeginning character of each of the groups. In other examples, some ofuser input controls may be displayed along two different axes.

As discussed, minimized groups may be displayed at block 1206.Displaying the minimized groups may include positioning themulti-character user input controls and the single character user inputcontrols in a window that does not entirely fit within the display. Inaddition, displaying the minimized groups may further include permittingthe user to alter the displayed portion of the window by receipt of oneor more user inputs. The user inputs could be any method or mechanismthat enables movement of the display to depict the non-displayed portionof the window, such as scrolling by selecting a blank portion of ascroll bar, clicking on and dragging a scroll bar button, spinning awheel button, or any other user input that initiates adjustment of theposition of the window in the display.

Displaying the maximized group and displaying the minimized group(s) mayalso include shifting non-critical items off screen to provide more areafor the expanded group. For example, this may include shifting graphicalelements, such as title area text like “Input Street Name”, off of thedisplay screen while the group is maximized. In addition to shiftinggraphical elements off of the display screen, displaying the maximizedgroup may also include shifting up other graphical elements, such as anentry field, to take the location of the shifted graphical elements.After a character is selected, the operation may include minimizing thegroup and shifting the shifted graphical elements back onto the displayscreen and/or any other items that moved.

If a character group changes status from minimized to maximized or frommaximized to minimized, animation transitions may be used to graphicallyemphasize the transition. The type of animation used may be configurableby the user.

At block 1208, a signal indicating a user input is received by the textspeller module. The user input may be received via the user interfacemodule from any form of one or more user input devices such as contactwith a touch screen of the display, a key press, a mouse move, a buttonclick, a voice command, or any other user input capable of providing anelectric signal to the text speller module.

At block 1210, the text speller module determines whether the user inputsignal indicates user selection of a minimized group. The determinationmay include any manner of checking whether the user input signal is amulti-character signal. For example, the determination may includechecking for a contact on the display screen above a correspondingmulti-character user input control, a hardware key press on the device,a mouse move over the multi-character user input control, or any othermechanism for selecting a currently minimized group to be maximized.

If a multi-character signal is received from the user input device, thenthe group of characters corresponding to the multi-character user inputcontrol is a selected group of characters. In response to receipt of themulti-character signal, the currently maximized group (if available) isidentified as one of the minimized groups at block 1212. At block 1214,the operation continues by internally identifying the selected group ofcharacters as the maximized group. The operation returns to block 1204to display the maximized group.

Alternatively, at block 1210, if the input signal received from the userinput device is not a multi-character signal, the operation continues atblock 1216 by checking whether whether a single character signal wasreceived from the user input device. Receipt of the single charactersignal may be indicative of the user input device selecting one of thesingle character user input controls. The receipt of the singlecharacter signal may indicate the user's desire to select a character inthe currently maximized group of characters. Such a selection may occurby user contact with a touch screen on an associated single characteruser input control, a key press, a mouse move over the associated singlecharacter user input control in combination with a mouse button click, avoice command, or any other mechanism for selecting a single characteruser input control.

If, at block 1216, the single character signal was received, theoperation continues at block 1218 by adding the selected character to atext entry. Adding the selected character to a text entry may includesimply adding the character to a text entry or setting the text entry tothe selected character if the text entry is not yet set to any value.The operation then returns to block 1204 to display the maximized group.

If, at block 1216, the single character signal was not received, theoperation continues at block 1220 where it is determined if the userinput indicates the user's desire to accept the text entry. Such a userinput may be initiated by a touch screen contact with an accept userinput control, a key press on the device, a voice command, or any otherany other mechanism for selection of acceptance of a current text entry.If the user input is not determined to be acceptance of a current textentry, the operation determines the user command embodied in the signaland returns to block 1204 to display a maximized group. If the userinput is determined to be acceptance of a current text entry, at block1222, the text speller module returns the text entry to the applicationin which the text speller module is operating and the operation ends.

FIG. 13 is a flow diagram illustrating a second example operation of thetext speller module of FIGS. 1-3 to obtain a text entry using user inputcontrols displayed on a display. The operation may begin at block 1302,by displaying at least one user input control in different displayregions of the display. Each of the display regions may be positionedand sized to include the at least one of the user input controls. Eachof the display regions may correspond to a group of characters formedfrom selectable characters. The user input controls may include amulti-character user input control, which is displayed in one of thedisplay regions that corresponds to one of the groups.

At block 1304, the operation may continue by checking for receipt of amulti-character signal from a user input device, where themulti-character signal is indicative of the user input device selectingthe multi-character user input control. If the multi-character userinput control was not selected at block 1304, the operation maycontinue, at block 1312, to check for selection of a single characteruser input control. Alternatively, if the multi-character user inputcontrol was selected at block 1304, the operation may continue at block1306 by displaying single character user input controls in the displayregion instead of the multi-character user input control. The singlecharacter user input controls correspond to the characters included inthe group corresponding to the multi-character user input control.

The operation may proceed at block 1308 by resizing the display regionto a new size, where the display region is sized to include the singlecharacter user input controls. Furthermore, the operation may proceed atblock 1310 by shifting the position of at least one of the displayregions other than the display region in order to accommodate the newsize of the display region.

At block 1312, the operation continues by checking for selection of asingle character user input control. The single character user inputcontrol corresponds to a selected character.

If, at block 1312, the single character user input control was selected,the operation may continue at block 1314 by adding the selectedcharacter to the text entry. The second example operation thencompletes. Alternatively, if the single character user input control wasnot selected, then the second example operation completes without addingthe selected character to the text entry.

Using relatively large buttons may make a text speller easier to use.Users with large fingers tend to favor larger buttons. Large letters maybe displayed on large buttons. Users with poor eyesight may find readinglarge letters easier than small letters.

Using relatively large buttons may impose on a user the burden of makingmany selections in order to select a desired character. The variousembodiments of the invention described enable the use of relativelylarge buttons without imposing a burden of making many selections inorder to make an text entry.

While various embodiments of the invention have been described, it willbe apparent to those of ordinary skill in the art that many moreembodiments and implementations are possible within the scope of theinvention. Accordingly, the invention is not to be restricted except inlight of the attached claims and their equivalents.

1. A system to generate a text entry with a user interface, the systemcomprising: a display; a user input device; a recent entries database; amemory; and a processor in communication with the memory, the display,the user input device and the recent entries database, whereinstructions encoded in the memory are executable with the processor to:generate the text entry in response to receipt of a plurality ofselection signals from the user input device, where at least one of theselection signals is indicative of a selection of a single characteruser input control corresponding to a beginning character, and the textentry comprises the beginning character; store the text entry in therecent entries database; and receive recent entries from the recententries database, where each of the recent entries start with thebeginning character.
 2. The system of claim 1, where the processor isoperable to: direct display of at least one of the recent entries inresponse to receipt of the at least one of the selection signals.
 3. Thesystem of claim 1, where the recent entries received from the recententries database are based on a speller type, the speller typeindicative of the type of information included in the text entry.
 4. Thesystem of claim 1, where the recent entries received from the recententries database are based on an identity of a user of the system. 5.The system of claim 1, where the processor is operable to: directdisplay on the display of a value indicative of a numerical count of therecent entries associated with the text entry.
 6. The system of claim 1,where the processor is further operable to: direct display on thedisplay of the beginning character and any remaining characters of oneof the recent entries, where the beginning character is displayeddifferently than the any remaining characters.
 7. The system of claim 1,where the recent entries received from the recent entries database arebased on a context and the context is indicative of a relationshipbetween information included in the text entry and information includedin other text entries.
 8. A method for generating a text entry with auser interface, the method comprising: generating a beginning characterof the text entry with a processor in response to selection of a singlecharacter user input control corresponding to the beginning character;receiving recent entries with the processor from a recent entriesdatabase, where each of the recent entries starts with the beginningcharacter and represents an entry that was completed within apredetermined period of time of a current time; and generating the textentry with the processor in response to a selection of one of the recententries received from the recent entries database.
 9. The method ofclaim 8 further comprising causing display of a recent entry that isincluded in the recent entries received from the recent entriesdatabase.
 10. The method of claim 8 further comprising limiting therecent entries received from the recent entries database based on aspeller type, the speller type indicative of a type of informationincluded in the text entry.
 11. The method of claim 8 further comprisinglimiting the recent entries received from the recent entries databasebased on an identity of a user.
 12. The method of claim 8 furthercomprising displaying a value indicative of a numerical count of therecent entries received from the recent entries database.
 13. The methodof claim 8 further comprising displaying the beginning character and anyremaining characters of one of the recent entries, where the beginningcharacter is displayed differently than the any remaining characters.14. The method of claim 8 further comprising limiting the recent entriesreceived from the recent entries database based on a context, where thecontext comprises information about an entry entered by a user that isof a type different than a type of the text entry.
 15. A computerreadable storage medium comprising instructions executable with aprocessor to: generate a portion of a text entry in response toselection of a user input control corresponding to a beginningcharacter, and the portion of the text entry comprises the beginningcharacter; receive recent entries from a recent entries database, whereeach of the recent entries starts with the beginning character andrepresents an entry that was entered within a predetermined period oftime of a current time; and cause any characters on any of a pluralityof user input controls that match any character immediately followingthe beginning character in any of the recent entries to be displayeddifferently than any characters on the user input controls that fail tomatch any character immediately following the beginning character in anyof the recent entries, where the user input controls are selectable tospell out the text entry.
 16. The computer readable storage medium ofclaim 15, where the computer readable storage medium further comprisesinstructions executable with the processor to generate the text entry inresponse to a selection of one of the recent entries received from therecent entries database.
 17. The computer readable storage medium ofclaim 15, wherein any characters on any of the user input controls thatmatch any character immediately following the beginning character in anyof the recent entries are bolded, and any characters on the user inputcontrols that fail to match any character immediately following thebeginning character in any of the recent entries are not bolded.
 18. Thecomputer readable storage medium of claim 15, where the user inputcontrols comprise a single character user input control and amulti-character user input control.
 19. The computer readable storagemedium of claim 15, where the computer readable storage medium furthercomprises instructions executable with the processor to limit the recententries received from the recent entries database to entries entered bya user that entered the beginning character.
 20. The computer readablestorage medium of claim 15, where the computer readable storage mediumfurther comprises instructions executable with the processor to limitthe recent entries received from the recent entries database based on acontext, where the context comprises information about an entry enteredby a user that is of a type different than a type of the text entry.